/* ColorStrings.h
 * 
 *  Author          : Alexander J. Yee
 *  Date Created    : 03/08/2018
 *  Last Modified   : 03/08/2018
 * 
 */

#pragma once
#ifndef ymp_Console_ColorStrings_H
#define ymp_Console_ColorStrings_H
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//  Dependencies
#include <vector>
#include <string>
namespace ymp{
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
struct ColorString{
    ColorString()
        : color(' ')
    {}
    ColorString(const char* t)
        : color(' ')
        , text(t)
    {}
    ColorString(std::string t)
        : color(' ')
        , text(std::move(t))
    {}
    ColorString(char c, std::string t)
        : color(c)
        , text(std::move(t))
    {}

    char color = ' ';
    std::string text;
};
using ColoredLine = std::vector<ColorString>;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
std::string merge_to_string(const ColoredLine& line);
void merge_same_color_blocks(ColoredLine& line);
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
}
#endif
